var http = require("http");
var formidable = require("formidable");
var util = require("util");
var fs = require("fs");
var sd = require("silly-datetime");
var path = require("path");

// 原生写post出了比较复杂 要写两个监听 文件上传业务难写  所以使用第三方模块 formidable
// 创建服务器
var server = http.createServer(function(req,res){
    // 如果你访问的地址是这个 并且请求类型是post
    if(req.url == "/post" && req.method.toLowerCase() == "post"){
        // 创建一个接收表单
        var form = new formidable.IncomingForm();
        form.uploadDir = "./uploads"    // 设置文件上传的路径

        form.parse(req,function(err,fields,files){
            // console.log(fields);
            // console.log(files);
            // util.inspect()把对象里面的内容展开显示
            console.log( util.inspect({fields:fields,files:files}));
            // 所有的文本域、单选框都在fields存放

            var ttt = sd.format(new Date(), 'YYYYMMDDHHmmss'); // 时间戳
            var ran = parseInt(Math.random() * 89999 + 10000);  // 随机数
            var extname = path.extname(files.tupian.name);  // 扩展名
            // 执行改名
            var oldpath = __dirname + "/" + files.tupian.path;
            var newpath = __dirname + "/uploads/" + ttt + ran + extname; // 随机生成的文件名

            fs.rename(oldpath,newpath,function(err){
                if(err){
                    throw Error("改名失败");
                }
                res.writeHead(200,{'content-type': 'text/plain'});          
                res.end("成功");
            });
        });
    } else if(req.url == "/"){
        // 呈递form.html页面
        fs.readFile("./09.html",function(err,data){
            res.writeHead(200,{'content-type': 'text/html'});
            res.end(data);
            console.log("bingo");
        })
    }else {
        res.writeHead(404,{'content-type': 'text/html'});
        res.end(404);
    }
});
server.listen(3000,"127.0.0.1");